package 集合学习.jihe_Map;

import java.util.*;

/**
 *
 *HashMap底层是哈希表
 * key：无序  唯一 HashSet
 * value： 无序 不唯一 collection
 *
 * LinkedHashMap
 * 哈希表+链表
 * key：有序（添加顺序）  唯一 LinkedHashSet
 * value： 无序 不唯一 collection
 *
 * TreeMap 红黑树
 * key：有序（自然顺序） 唯一 TreeSet
 * value：无序 不唯一 Collection
 *
 * 使用Map最多的四个操作
 * 1.创建对象Map
 * 2.添加键值对map.put()
 * 3.根据key获取value map.get()
 * 4.遍历map
 *
 * */
public class Hash_MapLinkedHash_MapTree_Map {

    public static void main(String[] args) {
        //创建一个HashMap对象
        Map<String,String> map=new HashMap<String ,String>();

        //创建一个LinkedHashMap
        Map<String,String> map1=new LinkedHashMap<>();

        //创建一个TreeMap
        Map<String,String> map2=new TreeMap<>();
        //还用Map对象存储键值对
        map.put("cn","China");  map1.put("cn","China"); map2.put("cn","China");
        map.put("jp","Japan");  map1.put("jp","Japan"); map2.put("jp","Japan");
        map.put("us","the United States"); map1.put("us","the United States"); map2.put("us","the United States");
        map.put("us","the United kingdom"); map1.put("us","the United kingdom"); map2.put("us","the United kingdom");
        map.put("en","United kingdom"); map1.put("en","United kingdom"); map2.put("en","United kingdom");
        //使用键获取值
        System.out.println(map.size());
        System.out.println(map);//获得所有的键值对key->value
        System.out.println("---------");
        System.out.println(map1);
        System.out.println("---------");
        System.out.println(map2);
        System.out.println(map.get("cn"));//根据键key找到对应的值value

        System.out.println(map.keySet());//返回所有的键key
        System.out.println(map.values());//返回所有的值value

        //遍历
        //方法一：得到所有的key组成Set
        Set<String> set =map.keySet();
        for(String key :set){
            System.out.println(key+"----->"+map.get(key));
        }

        //方法二：得到所有Entry组成的集合（Entry就是一个哈希表或者红黑树种的节点类）

        Set<Map.Entry<String,String>> entries=map.entrySet();
        Iterator<Map.Entry<String,String>> it=entries.iterator();
        while(it.hasNext()){
            Map.Entry<String,String> entry=it.next();
            System.out.println("--->"+entry);
        }

    }

}
